/**
 * @ author: 汪孟苹
 */
define(["jquery"], function ($) {
    var attention = {};

    /**
     * 提醒效果(暂时未用)
     */
    var effect01 = function(obj){
    	// doing 效果1
    }
    /**
     * 提醒规则里公用的方法(需要用的时候再加)
     */
    var judgeEffect = function(params){
    	switch( params.effect ){
			case "effect01":
				effect01(params.obj);
				break;
		}
    }
    
    /**
     * 提醒规则
     */
    // 根据条件判断加不加提醒效果
    var commWhetherAddEffect = function(params,condition){
        // 1、效果：class
        if( params.effectCls ){
            if( condition ){
                params.obj.addClass(params.effectCls);
            }else{
                params.obj.removeClass(params.effectCls);
            }
        }
        // 2、效果：
        if( params.effect ){
            if( condition ){
                judgeEffect(params);
            }else{
                // doing
            }
        }
    }
    // 非空
    var noNull = function(params){
        var condition = params.value;
        commWhetherAddEffect(params, condition);
    }
    // 正则匹配
    var regexMatch = function(params){
        var reg = eval( "("+ params.rule +")" );
        var condition = params.value && reg.test(params.value);
        commWhetherAddEffect(params, condition);
    }
    
    /**
     * 提醒处理
     */
    var attentionHandle = function(obj){
        var type = obj.attr("data-attentionType");
        var attentionJson = obj.attr("data-attention");
        if(!attentionJson || attentionJson.trim().length == 0) return true;
    	var options = JSON.parse( attentionJson );
    	if( typeof options == "object" && !$.isArray(options) ){ // 是对象的情况下
    		var newOpt = $.extend({},options);
    		options = [];
    		options.push(newOpt);
    	}
    	if(options.length == 0) return true;
		var value = obj.text(); // 获取值
        if(value) value = value.trim();
        for (var i = 0; i < options.length; i++) {
            var params = $.extend({"value":value,"obj":obj},options[i]);
            switch(options[i].rule) {
                case "noNull":
                    noNull(params);
                    break;
                default:
                    regexMatch(params);
            }
            /**
             * type:提醒类型
             * 		step: 		成功一个，就会退出循环;
             * 	 	continue:   全部循环完才退出循环;
             */
            if( type == "step") break;
        }
    }
    
    /**
     * 内容发生变化时触发
     */
    attention.onChange = function(obj){
        attentionHandle(obj);
    }
    
    /**
     * 初始化时触发
     */
    attention.init = function(){
        $('.validatebox').each(function(i){
            var obj = $('.validatebox').eq(i);
            attentionHandle(obj);
        });
    }

    return attention;
});